# ------------------------------------------------------------------------------
# Copyright (c) 2009, Reto Spoerri
# All rights reserved.
# 
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# 
# * Redistributions of source code must retain the above copyright notice, this
#   list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright notice,
#   this list of conditions and the following disclaimer in the documentation
#   and/or other materials provided with the distribution.
# * Neither the name of the <ORGANIZATION> nor the names of its contributors
#   may be used to endorse or promote products derived from this software
#   without specific prior written permission.
# 
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
# THE POSSIBILITY OF SUCH DAMAGE.
# ------------------------------------------------------------------------------

__all__=['ObjectEggBase']

from pandac.PandaModules import *

from core.pTreeNode import *
from core.pConfigDefs import *

class ObjectEggBase(TreeNode):
  className = 'EggBase'
  def __init__(self, parent, modelWrapper, name='EggBase'):
    self.modelWrapper = modelWrapper
    TreeNode.__init__(self, name)
    TreeNode.reparentTo(self, parent)
    
    self.possibleFunctions = []
    self.possibleChildren = [
        'ObjectEggGroup',
        'ObjectEggPolygon',
        'ObjectEggTexture',
        'ObjectEggVertexPool',
        'ObjectEggPolygonGroup'
      ]
    
    self.defaultPolygonGroup = None
  
  def setEditmodeEnabled(self):
    TreeNode.setEditmodeEnabled(self)
  
  def setEditmodeDisabled(self):
    TreeNode.setEditmodeDisabled(self)
  
  def startEdit(self):
    if TreeNode.isEditmodeEnabled(self):
      # disable the 3d window object selection
      TreeNode.startEdit(self)
      messenger.send(EVENT_SCENEPICKER_MODELSELECTION_DISABLE)
    else:
      print "W: ObjectEggBase.startEdit: editmode not enabled"
    
  def stopEdit(self):
    if TreeNode.isEditmodeEnabled(self):
      TreeNode.stopEdit(self)
      # enable the 3d window object selection
      messenger.send(EVENT_SCENEPICKER_MODELSELECTION_ENABLE)
    else:
      print "W: ObjectEggBase.stopEdit: editmode not enabled"
  
  def revert(self):
    ''' reverts to the model on the disk '''
    print "I: ObjectEggBase.revert: todo"
  
  def update(self):
    ''' refeshes the visual output of this model, using the modifed settings '''
    print "I: ObjectEggBase.update: todo"
  
  def destroy(self):
    TreeNode.destroy(self)
  
  def getSaveData(self, relativeTo):
    # we do not want to save this nodes into a egs (egg-scene)
    return None
